#!/bin/bash

# 3x-ui Linux构建脚本
# 支持的平台: amd64, arm64, armv7, armv6, 386, armv5, s390x

set -e

# 默认平台为amd64
PLATFORM=${1:-amd64}

echo "开始构建 3x-ui Linux-${PLATFORM} 版本..."

# 设置构建环境
export CGO_ENABLED=1
export GOOS=linux

# 根据平台设置相应的环境变量
case $PLATFORM in
    "amd64")
        export GOARCH=amd64
        XRAY_FILE="Xray-linux-64.zip"
        ;;
    "arm64")
        export GOARCH=arm64
        XRAY_FILE="Xray-linux-arm64-v8a.zip"
        ;;
    "armv7")
        export GOARCH=arm
        export GOARM=7
        XRAY_FILE="Xray-linux-arm32-v7a.zip"
        ;;
    "armv6")
        export GOARCH=arm
        export GOARM=6
        XRAY_FILE="Xray-linux-arm32-v6.zip"
        ;;
    "386")
        export GOARCH=386
        XRAY_FILE="Xray-linux-32.zip"
        ;;
    "armv5")
        export GOARCH=arm
        export GOARM=5
        XRAY_FILE="Xray-linux-arm32-v5.zip"
        ;;
    "s390x")
        export GOARCH=s390x
        XRAY_FILE="Xray-linux-s390x.zip"
        ;;
    *)
        echo "不支持的平台: $PLATFORM"
        echo "支持的平台: amd64, arm64, armv7, armv6, 386, armv5, s390x"
        exit 1
        ;;
esac

echo "构建平台: ${GOOS}-${GOARCH}"

# 构建主程序
echo "正在构建主程序..."

# 设置交叉编译的C编译器标志
export CGO_CFLAGS="-D_GNU_SOURCE"

# 根据平台设置交叉编译器
case $PLATFORM in
    "amd64")
        # 对于amd64，使用默认设置
        ;;
    "arm64")
        # 如果有交叉编译器，可以设置
        # export CC=aarch64-linux-gnu-gcc
        ;;
    "armv7"|"armv6"|"armv5")
        # 如果有交叉编译器，可以设置
        # export CC=arm-linux-gnueabihf-gcc
        ;;
    "386")
        # 如果有交叉编译器，可以设置
        # export CC=i686-linux-gnu-gcc
        ;;
    "s390x")
        # 如果有交叉编译器，可以设置
        # export CC=s390x-linux-gnu-gcc
        ;;
esac

# 构建时禁用一些可能有问题的特性
go build -ldflags "-w -s" -tags "netgo" -o xui-release -v main.go

# 创建发布目录
echo "创建发布目录..."
rm -rf x-ui
mkdir -p x-ui/bin

# 复制文件
cp xui-release x-ui/x-ui
cp x-ui.service x-ui/
cp x-ui.sh x-ui/
chmod +x x-ui/x-ui x-ui/x-ui.sh

# 下载Xray核心和地理位置数据
echo "下载Xray核心和地理位置数据..."
cd x-ui/bin

# 下载Xray核心
XRAY_URL="https://github.com/XTLS/Xray-core/releases/download/v25.7.26/"
echo "下载 ${XRAY_FILE}..."
wget -q ${XRAY_URL}${XRAY_FILE}
unzip -q ${XRAY_FILE}
rm -f ${XRAY_FILE}

# 下载地理位置数据文件
echo "下载地理位置数据文件..."
rm -f geoip.dat geosite.dat
wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat
wget -q https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat
wget -q -O geoip_IR.dat https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geoip.dat
wget -q -O geosite_IR.dat https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geosite.dat
wget -q -O geoip_RU.dat https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geoip.dat
wget -q -O geosite_RU.dat https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/geosite.dat

# 重命名xray可执行文件
mv xray xray-linux-${PLATFORM}

cd ../..

# 打包
echo "打包文件..."
tar -zcvf x-ui-linux-${PLATFORM}.tar.gz x-ui

echo "构建完成！"
echo "输出文件: x-ui-linux-${PLATFORM}.tar.gz"
echo ""
echo "使用方法:"
echo "1. 解压: tar -zxvf x-ui-linux-${PLATFORM}.tar.gz"
echo "2. 进入目录: cd x-ui"
echo "3. 运行安装脚本: sudo bash x-ui.sh"
echo "或者直接运行: sudo ./x-ui"

# 清理临时文件
rm -f xui-release

